package day18.zhiyou100;

// 中断休眠线程interrupt() 采用异常机制来中断当前休眠的线程
// 采用优雅停止线程的办法，使用开关技术(布尔标记)
public class Demo03 {
    public static void main(String[] args){
        MyThread02  myThread02 = new MyThread02();
        Thread t01 = new Thread(myThread02,"t01");
        t01.start();// 开启多线程
        try {
            t01.join(1000*5);
            // 主线程休眠了5秒钟
           // Thread.sleep(1000*5);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        //t01.interrupt();// 通过异常机制中断休眠的线程  不建议使用
        // 开关技术 可以优雅结束一个正在执行的程序
        myThread02.run = false;

       /*  for (int i = 0; i < 50; i++) {
            //System.out.println(Thread.);
        }*/
    }

}

// 自定义一个class类
class MyThread02 implements Runnable {

    boolean run = true;// 默认线程是执行的

    @Override
    public void run() {
        for (int i = 0; i < 50; i++) {
            // 什么时候打印执行
            if (run) {
                System.out.println(Thread.currentThread().getName() + "-----" + i);
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            } else {
                // 什么时候不打印执行  结束run方法
                // continue 继续
                // 结束当前正在执行的方法
               return;
            }
        }

    }


}